package com.pan.admin.module.loanProduct.dao;

import com.pan.admin.module.loanProduct.entity.FieldAndFieldValueVo;
import com.pan.admin.module.loanProduct.entity.LoanProductPlanField;
import com.pan.admin.module.loanProduct.entity.vo.ProductFieldAndFieldValueVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 产品机构，资质字段匹配Dao接口
 *
 * @author ts
 * @date 2023-09-15
 */
@Mapper
public interface LoanProductPlanFieldDao {

    /**
     * 根据ID获取列表产品机构，资质字段匹配
     *
     * @param loanProductId
     * @param loanFormFieldId
     * @param loanForFieldValueId
     * @return
     */
    LoanProductPlanField getById(@Param("loanProductId") Integer loanProductId
            , @Param("loanFormFieldId") Integer loanFormFieldId, @Param("loanFormFieldValueId") Integer loanForFieldValueId,@Param("loanProductPlanId") Integer loanProductPlanId);

    /**
     * 查询产品机构，资质字段匹配列表
     *
     * @param loanProductPlanField 产品机构，资质字段匹配
     * @return 产品机构，资质字段匹配集合
     */
    List<LoanProductPlanField> list(LoanProductPlanField loanProductPlanField);

    /**
     * 统计数量
     *
     * @param loanProductPlanField
     */
    int count(LoanProductPlanField loanProductPlanField);

    /**
     * 新增产品机构，资质字段匹配
     *
     * @param loanProductPlanField 产品机构，资质字段匹配
     * @return 结果
     */
    int insertLoanProductPlanField(List<LoanProductPlanField> loanProductPlanField);

    /**
     * 修改产品机构，资质字段匹配
     *
     * @param loanProductPlanField 产品机构，资质字段匹配
     * @return 结果
     */
    int updateLoanProductPlanField(LoanProductPlanField loanProductPlanField);

    /**
     * 删除产品机构，资质字段匹配
     *
     * @param id 产品机构，资质字段匹配主键
     * @return 结果
     */
    int deleteById(Long id);

    /**
     * 批量删除产品机构，资质字段匹配
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int batchDeleteById(Long[] ids);

    /**
     * 查询所有字段和所属字段值列表
     */
    List<FieldAndFieldValueVo> listFieldAndValue(LoanProductPlanField field);

    /**
     * 批量删除产品机构，资质字段匹配
     *
     * @param loanProductId 需要删除的数据主键集合
     * @return 结果
     */
    int batchDeleteByListIds(List<ProductFieldAndFieldValueVo> productFieldAndFieldValueVoList);
}
